#include "linklist1.h"
/*链表 尾节点的指针域指向NULL */
int main(int argc, char const *argv[])
{
    /* code */
    Linklist head=list_Create();//创建一个单链表
    //插入数据
    list_tail_insert(head,1);
    list_tail_insert(head,2);
    list_tail_insert(head,3);
    list_tail_insert(head,4);
    list_tail_insert(head,5);
    list_show(head);
    return 0;
}

//创建一个链表 
Linklist list_Create()
{
    Linklist Head=(Linklist)malloc(sizeof(linkNode));//创建一个头节点
    if(Head==NULL)
    {
        printf("MALLOC FAILED\n");
        return NULL;
    }
    //头节点不用来存数据 只用来指向下一个节点的地址
    Head->data=0;
    Head->next=NULL;//无数据  也就不存在下一个节点
    return Head;
}
//尾部插入数据
int list_tail_insert(Linklist H, Data_type value)
{
    
    if(H==NULL)
    {
        printf("linklist is NULL\n");
        return -1;
    }
    //为新数据创建一个结点  新节点
    Linklist newNode=(Linklist)malloc(sizeof(linkNode));
    if(newNode==NULL)
    {
        printf("newNode is NULL\n");
        return -1;
    }
    newNode->data=value;//新节点的数据
    newNode->next=NULL;//指针域
    //查找尾节点
    Linklist p_head=H;//p_head是一个"替死鬼"
    while (p_head->next)//p_head的下一个指针域不为空  让p_head继续指向下一个结点
    {
        p_head=p_head->next;
    }
    //当前p_head就是最后一个结点
    //将新的结点插入p_head的next
    p_head->next=newNode;
    return 1;
    
}
//遍历
int list_show(Linklist H)
{
    //头节点没有数据
    if(H==NULL)
    {
        printf("linklist is NULL\n");
        return -1;
    }
    Linklist p_head=H->next;//从头节点下一个结点开始
    while (p_head)//最后一个结点（尾节点）是有数据的 只是指针域为NULL
    {
        printf("%d\n",p_head->data);
        p_head=p_head->next;
    }
    return 1;
}
